package com.sky.wsp.mybatis.plus.plugins.inner;

import org.apache.ibatis.mapping.ParameterMapping;
import org.apache.ibatis.reflection.MetaObject;

import java.util.List;

/**
 * @desccription 自定义MybatisPlus拦截器，校验数据权限，使用的VO参数
 * @auth wangshaopeng@talkweb.com.cn
 * @date 2023/1/17
 */
public class DataPermissionParameterVO {
    /**
     * statement的参数VO的反射器，用于获取参数VO中的属性值
     */
    MetaObject metaParameters;
    /**
     * 与statement的columns对应的properties，按list的下标索引进行对应关系映射，
     * 例如inert (id, stu_name, stu_age) into student values (#{id}, #{stu_name}, #{stu_age});
     * <p>
     * java实体类Student(stuAge, stuName, id); 则经过columns与properties进行对应后，
     * parameterMappings这个List里的顺序为["id", "stuName", "stuAge"]，
     * 处理此逻辑的代码在org.apache.ibatis.parsing.GenericTokenParser.pare()中。
     */
    List<ParameterMapping> parameterMappings;

    public MetaObject getMetaParameters() {
        return metaParameters;
    }

    public void setMetaParameters(MetaObject metaParameters) {
        this.metaParameters = metaParameters;
    }

    public List<ParameterMapping> getParameterMappings() {
        return parameterMappings;
    }

    public void setParameterMappings(List<ParameterMapping> parameterMappings) {
        this.parameterMappings = parameterMappings;
    }
}
